﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.clinica.business.BE.gesliq;
using com.clinica.business.BE.gescot;
using com.clinica.business.BE.comun;
using LiclUtil;
using LiclCotizacion.Views;
using System.Text;


namespace wesiGestClinica.gescot
{
    public partial class FormsManSolicitudCotizacion : Shared.SMGPaseBase,ILiclMantenimientoCotizacion
    {
        private LiclMantenimientoCotizacionPresenter oPresenter = new LiclMantenimientoCotizacionPresenter();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                oPresenter.View = this;
                this.Master.TituloModulo = "Registrar Cotizacion";
                CargarTipoDocumento();
                IniciarControles();
                CargarUrl();
                //EstablecerModos(0);

                if (Request.QueryString["xobj"] != null)
                {
                    btn_Imprimir.Visible = true;
                    btn_Aprobar.Visible = false;
                    btn_Rechazar.Visible = false;
                
                }

            }
            VerificarItemGrilla();
            Master.OcultarMensaje();
            oPresenter.View = this;
        }
        protected override void DefineHandlers()
        {
            img_Buscar.Click += new ImageClickEventHandler(img_Buscar_Click);
            img_Buscar.Attributes.Add("onClick", "abrirPopupPaciente();");
            btn_Agregar.Attributes.Add("onClick", "abrirPopupAgregarServicios();");
            img_BuscarEspecialidad.Attributes.Add("onClick", "abrirPopupAgregarEspecialidad();");

            UCBarra1.img_Grabar.Click += new ImageClickEventHandler(img_Grabar_Click);
            UCBarra1.img_Grabar.Attributes.Add("onClick", "if(!window.confirm(' Desea Guardar Cotizacion'))return false;");
            UCBarra1.img_Grabar.ValidationGroup = "Grp_grabar";

            UCBarra1.img_Volver.Click += new ImageClickEventHandler(img_Volver_Click);
            UCBarra1.img_Grabar.Visible = true;
            UCBarra1.img_Volver.Visible = true;
            btn_Agregar.Click += new EventHandler(btn_Agregar_Click);
            dg_CotizacionesDetalle.RowCommand += new GridViewCommandEventHandler(dg_CotizacionesDetalle_RowCommand);
            btn_Aprobar.Click += new EventHandler(btn_Aprobar_Click);
            btn_Aprobar.Attributes.Add("onClick", "if(!window.confirm(' Desea Aprobar la cotizacion'))return false;");
            btn_Rechazar.Click += new EventHandler(btn_Rechazar_Click);
            btn_Rechazar.Attributes.Add("onClick", "if(!window.confirm(' Desea Rechazar la cotizacion'))return false;");
        }
        #region Eventos
        void btn_Aprobar_Click(object sender, EventArgs e)
        {
            try
            {
                CotizacionBE obj = new CotizacionBE();
                obj.TipoCotizacion = int.Parse(rbl_TipoDocumento.SelectedValue);
                obj.NumeroSol = int.Parse(txt_Numero.Text);
                oPresenter.onAprobar_SolicitudCotizacion(obj);
            }
            catch (Exception)
            {
            }
        }
        void btn_Rechazar_Click(object sender, EventArgs e)
        {
            try
            {
                CotizacionBE obj = new CotizacionBE();
                obj.TipoCotizacion = int.Parse(rbl_TipoDocumento.SelectedValue);
                obj.NumeroSol = int.Parse(txt_Numero.Text);
                obj.Observacion = txt_Observaciones.Text.Trim();
                oPresenter.onRechazar_SolicitudCotizacion(obj);
            }
            catch (Exception)
            {
            }
        }

        void dg_CotizacionesDetalle_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Eliminar")
            {
                string strUrl = string.Empty;
                string strScript = string.Empty;
                bool booFalt;
                CotizacionBE oTarifa = new CotizacionBE();
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dg_CotizacionesDetalle.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                if (arr[0].ToString().Trim() != "0")
                {
                    if (ListaSolicitudCotizacion != null)
                    {
                        if (ListaSolicitudCotizacion.Count > 0)
                        {
                            foreach (CotizacionBE item in ListaSolicitudCotizacion)
                            {
                                if (item.CodigoServicio == int.Parse(arr[0].ToString().Trim()))
                                {
                                    booFalt = true;
                                    oTarifa = item;
                                }
                            }
                            ListaSolicitudCotizacion.Remove(oTarifa);
                            dg_CotizacionesDetalle.DataSource = ListaSolicitudCotizacion;
                            dg_CotizacionesDetalle.DataBind();
                            Calcularresultados();
                        }
                    }
                }

            }

        }

        void btn_Agregar_Click(object sender, EventArgs e)
        {
            List<CotizacionBE> lstTarifa = new List<CotizacionBE>();
            List<ServiciosBE> LstServicio = new List<ServiciosBE>();
            CotizacionBE oTarifa = new CotizacionBE();

            lstTarifa = ListaSolicitudCotizacion;
            LstServicio = (List<ServiciosBE>)Session["ListaServiciosAdd"];
            if (LstServicio != null)
            {
                if (LstServicio.Count > 0)
                {
                    foreach (ServiciosBE item in LstServicio)
                    {
                        oTarifa.CodigoServicio = item.Codigo;
                        oTarifa.Servicio = item.Descripcion;
                        oTarifa.Unidad = item.Unidades;
                        oTarifa.TipoCalculo = item.TipoCalculo;
                        oTarifa.DescripcionTipoCalculo = item.DescripcionTipoCalculo;
                        oTarifa.Precio = decimal.Parse(item.ValorCalculo.ToString("#####.##") == string.Empty ? "0.00" : item.ValorCalculo.ToString("#####.##"));                        
                        oTarifa.Descuento = decimal.Parse(item.PorcentajeDescuento.ToString("#####.##") == string.Empty ? "0.00" : item.PorcentajeDescuento.ToString("#####.##"));
                        oTarifa.Neto = decimal.Parse(item.Precio.ToString("#####.##") == string.Empty ? "0.00" : item.Precio.ToString("#####.##"));
                        if (lstTarifa == null)
                            lstTarifa = new List<CotizacionBE>();
                        if (!VerificarServicioExiste(oTarifa))
                            lstTarifa.Add(oTarifa);
                    }
                    dg_CotizacionesDetalle.DataSource = lstTarifa;
                    dg_CotizacionesDetalle.DataBind();
                    ListaSolicitudCotizacion = lstTarifa;
                    Calcularresultados();
                }
            }
        }

        void img_Volver_Click(object sender, ImageClickEventArgs e)
        {
            Response.Redirect("FormsConBandejaCotizacion.aspx?action=1");
            //string strUrl = string.Empty;
            //string strScript = string.Empty;
            //if (Request.QueryString["action"].ToString().Trim() == "2")
            //    //strUrl = "~/gescot/FormsConBandejaCotizacion.aspx?action=0";
            //    strUrl = "FormsConBandejaCotizacion.aspx?action=0";
            //else if (Request.QueryString["action"].ToString().Trim() == "3")
            //    //strUrl = "~/gescot/FormsConBandejaCotizacion.aspx?action=1";
            //    strUrl = "FormsConBandejaCotizacion.aspx?action=1";
            //strScript = "window.location = '" + strUrl + "';";
            //ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", strScript, true);
        }

        void img_Grabar_Click(object sender, ImageClickEventArgs e)
        {
            if (ValidarCampos())
            {
                CotizacionBE oCotiza = new CotizacionBE();
                oCotiza.TipoCotizacion = int.Parse(rbl_TipoDocumento.SelectedValue);
                oCotiza.NumeroSol = int.Parse(txt_Numero.Text);
                oCotiza.Fecha = DateTime.Parse(DateTime.Parse(UC_FechaEmision.TextoFecha.Text).ToString("dd/MM/yyyy"));
                oCotiza.CodigoEstado = int.Parse(txt_CodEstado.Text);
                oCotiza.CodigoPaciente = int.Parse(txt_CodigoPaciente.Text);
                oCotiza.Referencia = txt_Referencia.Text.Trim();
                oCotiza.CodigoEspecialidad = int.Parse(txt_CodEspecialidad.Text);
                oCotiza.Vigencia = int.Parse(txt_Vigencia.Text);
                oCotiza.NumeroCartaGarantia = int.Parse(txt_NumeroCarta.Text);
                oCotiza.Observacion = txt_Observaciones.Text.Trim();
                oCotiza.ImporteNeto = decimal.Parse(txt_TotalNeto.Text);
                oCotiza.ImporteBruto = decimal.Parse(txt_TotalBruto.Text);
                oCotiza.ImporteIgv = decimal.Parse(txt_Igv.Text);
                oCotiza.CoSeguro = decimal.Parse(txt_Coaseguro.Text);
                oCotiza.Deducible = decimal.Parse(txt_Deducibles.Text);
                if (ListaSolicitudCotizacion != null)
                    if (ListaSolicitudCotizacion.Count > 0)
                    {
                        foreach (CotizacionBE item in ListaSolicitudCotizacion)
                        {
                            item.TipoCotizacion = oCotiza.TipoCotizacion;
                            item.NumeroSol = oCotiza.NumeroSol;
                            item.Fecha = oCotiza.Fecha;
                            item.CodigoEstado = oCotiza.CodigoEstado;
                            item.CodigoPaciente = oCotiza.CodigoPaciente;
                            item.Referencia = oCotiza.Referencia;
                            item.CodigoEspecialidad = oCotiza.CodigoEspecialidad;
                            item.Vigencia = oCotiza.Vigencia;
                            item.NumeroCartaGarantia = oCotiza.NumeroCartaGarantia;
                            item.ImporteNeto = oCotiza.ImporteNeto;
                            item.ImporteBruto = oCotiza.ImporteBruto;
                            item.ImporteIgv = oCotiza.ImporteIgv;
                            item.Observacion = oCotiza.Observacion;
                        }
                        if ((string)Session["Action"]=="new")
                            oPresenter.onGrabar_SolicitudCotizacion(1, ListaSolicitudCotizacion);
                        else if ((string)Session["Action"] == "update")
                            oPresenter.onGrabar_SolicitudCotizacion(2, ListaSolicitudCotizacion);
                    }

            }
        }

        void img_Buscar_Click(object sender, ImageClickEventArgs e)
        {
            if ((string)Session["Action"] == "new")
            {
                PacienteBE oPaciente = new PacienteBE();
                oPaciente.TipoBusqueda = 2;
                if (txt_NumeroDoc.Text.Trim() != string.Empty)
                {
                    oPaciente.NumeroDocumento = txt_NumeroDoc.Text.Trim();
                    oPresenter.onBuscar_Paciente(oPaciente);
                }
            }
            else if ((string)Session["Action"] == "update")
            {

            }
        }
        #endregion
        private void Calcularresultados()
        {
            decimal Bruto = 0M;
            decimal Descuento = 0M;
            decimal Igv = 0M;
            decimal Neto = 0M;

            if(ListaSolicitudCotizacion!=null)
                if (ListaSolicitudCotizacion.Count > 0)
                {
                    foreach (CotizacionBE item in ListaSolicitudCotizacion)
                    {
                        Bruto = Bruto + item.Precio;
                        Descuento = Descuento + (item.Precio - (item.Precio * item.Descuento) / 100);
                        Igv = Igv + item.Igv;
                        Neto = Neto + item.Neto;
                    }
                    txt_TotalBruto.Text = Descuento.ToString();
                    txt_Igv.Text = Igv.ToString();
                    txt_TotalNeto.Text = Neto.ToString();
                    txt_Coaseguro.Text = "0.00";
                    txt_Deducibles.Text = "0.00";
                }
        }
        private bool ValidarCampos()
        {
            bool boFlat = true;
            StringBuilder strError = new StringBuilder();
            if (txt_CodigoPaciente.Text.Trim() == string.Empty)
            {
                boFlat = false;
                strError.Append("Debe seleccionar paciente.");
            }
            if (txt_CodEstado.Text.Trim() == string.Empty)
            {
                txt_CodEstado.Text = "0";
            }
            if (txt_CodEspecialidad.Text.Trim() == string.Empty)
            {
                boFlat = false;
                strError.Append("Debe seleccionar una especialidad.");
            }
            if (txt_NumeroCarta.Text.Trim() == string.Empty)
            {
                boFlat = false;
                strError.Append("Debe ingresar número de carta de garantia.");
            }
            if (ListaSolicitudCotizacion != null)
            {
                if (ListaSolicitudCotizacion.Count == 0)
                {
                    boFlat = false;
                    strError.Append(" debe ingresar almenos un servicio. ");
                }
            }
            else
            {
                boFlat = false;
                strError.Append(" debe ingresar almenos un servicio. ");
            }
            try
            {
                int.Parse(txt_CodigoPaciente.Text.Trim());
            }
            catch (Exception)
            {
                boFlat = false;
                strError.Append("Debe seleccionar paciente.");
            }
            try
            {
                int.Parse(txt_CodEstado.Text.Trim());
            }
            catch (Exception)
            {
                boFlat = false;
                strError.Append("hay un  problema con el estado.");
            }
            try
            {
                int.Parse(txt_CodEspecialidad.Text.Trim());
            }
            catch (Exception)
            {
                boFlat = false;
                strError.Append("Debe seleccionar una Especialiddad.");
            }
            try
            {
                int.Parse(txt_NumeroCarta.Text);
            }
            catch (Exception)
            {
                boFlat = false;
                strError.Append("Error de caracter no valido en Numero de carta de garantia.");
            }
            try
            {
                int.Parse(txt_NumeroCarta.Text);
            }
            catch (Exception)
            {
                txt_NumeroCarta.Text ="0";
            }
            try
            {
                decimal.Parse(txt_TotalBruto.Text);
            }
            catch (Exception)
            {
                txt_TotalBruto.Text = "0.00";
            }
            try
            {
               decimal.Parse(txt_TotalNeto.Text);
            }
            catch (Exception)
            {
                txt_TotalNeto.Text = "0.00";
            }
            try
            {
                decimal.Parse(txt_Igv.Text);
            }
            catch (Exception)
            {
                txt_Igv.Text = "0.00";
            }
            try
            {
                decimal.Parse(txt_Coaseguro.Text);
            }
            catch (Exception)
            {
                txt_Coaseguro.Text = "0.00";
            }
            try
            {
                decimal.Parse(txt_Deducibles.Text);
            }
            catch (Exception)
            {
                txt_Deducibles.Text = "0.00";
            }
            if (!boFlat)
            {
                Master.MostrarMensaje(strError.ToString(), TipoMensaje.Error);
            }            
            return boFlat;
        }
        #region Metodos
        private bool VerificarServicioExiste(CotizacionBE oTarifa)
        {
            bool val = false;
            if (ListaSolicitudCotizacion != null)
                if (ListaSolicitudCotizacion.Count > 0)
                    foreach (CotizacionBE item in ListaSolicitudCotizacion)
                    {
                        if (item.CodigoServicio == oTarifa.CodigoServicio)
                        {
                            val = true;
                            break;
                        }
                    }
            return val;

        }
        private void VerificarItemGrilla()
        {
            if (dg_CotizacionesDetalle.Rows[0].Cells[0].Text == "0")
                dg_CotizacionesDetalle.Enabled = false;
            else
                dg_CotizacionesDetalle.Enabled = true;
        }
        private void CargarUrl()
        {
            string action = string.Empty;
            string TipoSol = string.Empty;
            string Num = string.Empty;

            try
            {
                action = Request.QueryString["action"].ToString().Trim();
                TipoSol = Request.QueryString["TipoSol"].ToString().Trim();
                Num = Request.QueryString["Num"].ToString().Trim();
            }
            catch (Exception)
            {


            }
            switch (action)
            {
                case "1":
                    Session.Add("Action", "new");
                    EstablecerModos(1);
                    break;
                case "2":
                    Session.Add("Action", "update");
                    EstablecerModos(2);
                    CotizacionBE oTar = new CotizacionBE();
                    oTar.NumeroSol = int.Parse(Num);
                    oTar.TipoCotizacion = int.Parse(TipoSol);
                    oPresenter.onObtener_Cotizacion(oTar);
                    EstablecerModos(2);
                    break;
                case "3"://evaluacion
                    EstablecerModos(3);
                    CotizacionBE oTar1 = new CotizacionBE();
                    oTar1.NumeroSol = int.Parse(Num);
                    oTar1.TipoCotizacion = int.Parse(TipoSol);
                    oPresenter.onObtener_Cotizacion(oTar1);
                    btn_Aprobar.Visible = btn_Rechazar.Visible = 
                    UCBarra1.img_Volver.Visible = true;
                    UCBarra1.img_Grabar.Visible =
                    img_Buscar.Visible = img_BuscarEspecialidad.Visible = false;
                    break;
                default:
                    break;
            }
        }
        private void EstablecerModos(int action)
        {
            switch (action)
            {
                case 1:
                    #region Nuevo
                    rbl_TipoDocumento.Enabled =
                    txt_Observaciones.Enabled =
                    txt_Referencia.Enabled =
                    txt_Observaciones.Enabled =
                    UCBarra1.img_Volver.Enabled =
                    UCBarra1.img_Grabar.Enabled =
                    btn_Agregar.Enabled = true;

                    txt_Estado.Enabled =
                    txt_Numero.Enabled =
                    UC_FechaEmision.Enabled = false;
                    #endregion
                    break;
                case 2:
                    #region Editar
                    rbl_TipoDocumento.Enabled =
                    txt_Estado.Enabled =
                    txt_Numero.Enabled =
                    UC_FechaEmision.Enabled =
                    UC_FechaEmision.Enabled = false;

                    UCBarra1.img_Volver.Enabled =
                    UCBarra1.img_Grabar.Enabled =
                    txt_Observaciones.Enabled =
                    btn_Agregar.Enabled = true;
                    #endregion
                    break;
                case 3:
                    #region Evaluar
                    rbl_TipoDocumento.Enabled =
                    txt_Estado.Enabled =
                    txt_Numero.Enabled =
                    UC_FechaEmision.Enabled =
                    txt_CiaSeguros.Enabled =
                    txt_Empresa.Enabled =
                    txt_HistoriaClinica.Enabled =
                    txt_Paciente.Enabled =
                    txt_PlanSalud.Enabled =
                    txt_Poliza.Enabled =
                    txt_Titular.Enabled =
                    txt_Especialidad.Enabled =
                    txt_NumeroCarta.Enabled =
                    txt_TotalNeto.Enabled =
                    txt_TotalBruto.Enabled =
                    txt_Igv.Enabled =
                    txt_Coaseguro.Enabled =
                    txt_Deducibles.Enabled =
                    txt_Referencia.Enabled =
                    btn_Agregar.Enabled=
                    txt_Vigencia.Enabled=
                    dg_CotizacionesDetalle.Columns[7].Visible = false;

                    txt_Observaciones.Enabled = true;
                    #endregion
                    break;
                default:
                    UCBarra1.img_Grabar.Enabled = false;
                    btn_Agregar.Enabled = false;
                    dg_CotizacionesDetalle.Enabled = false;
                    UCBarra1.img_Volver.Enabled = true;
                    break;
            }
        }

        private void CargarTipoDocumento()
        {
            com.clinica.business.BE.comun.ParametrosBE oParm = new com.clinica.business.BE.comun.ParametrosBE();
            oParm.NombreTabla = "TIPCOT";
            oPresenter.onObterner_Tabla(oParm);
        }
        private void IniciarControles()
        {
            DateTime fecha = new DateTime();
            fecha = DateTime.Today.ToUniversalTime();
            UC_FechaEmision.TextoFecha.Text = fecha.ToString("dd/MM/yyyy");
            txt_Estado.Text = string.Empty;
            txt_CiaSeguros.Text = string.Empty;
            txt_Empresa.Text = string.Empty;
            txt_HistoriaClinica.Text = string.Empty;
            txt_Paciente.Text = string.Empty;
            txt_PlanSalud.Text = string.Empty;
            txt_Poliza.Text = string.Empty;
            txt_Titular.Text = string.Empty;
            txt_Numero.Text = "0";
            txt_CodEspecialidad.Text = "0";
            txt_CodigoPaciente.Text = "0";
            txt_CodEstado.Text = "0";
            txt_NumeroCarta.Text = "0";

            txt_TotalNeto.Text = "0.00";
            txt_TotalBruto.Text = "0.00";
            txt_Igv.Text = "0.00";
            txt_Coaseguro.Text = "0.00";
            txt_Deducibles.Text = "0.00";

            List<CotizacionBE> lst = new List<CotizacionBE>();
            lst.Add(new CotizacionBE());
            dg_CotizacionesDetalle.DataSource = lst;
            dg_CotizacionesDetalle.DataBind();
            if (rbl_TipoDocumento.Items.Count > 0) rbl_TipoDocumento.Items[0].Selected = true;

            UCBarra1.img_Grabar.Visible = true;
            UCBarra1.img_Volver.Visible = true;
        }
         private void PrepararListaServicios()
        {
            List<ServiciosBE> lst = new List<ServiciosBE>();
            if (ListaSolicitudCotizacion.Count > 0)
            {

                foreach (CotizacionBE oTarifa in ListaSolicitudCotizacion)
                {
                    ServiciosBE item = new ServiciosBE();
                    item.Codigo = oTarifa.CodigoServicio;
                    item.Descripcion= oTarifa.Servicio;
                    item.Unidades = oTarifa.Unidad;
                    item.TipoCalculo = oTarifa.TipoCalculo;
                    item.DescripcionTipoCalculo = oTarifa.DescripcionTipoCalculo;
                    item.ValorCalculo = oTarifa.Precio;
                    item.PorcentajeDescuento = oTarifa.Descuento;
                    item.Precio = oTarifa.Neto;
                    lst.Add(item);
                }
                Session["ListaServiciosAdd"] = lst;
            }
        }
        #endregion
        #region ILiclMantenimientoCotizacion Members

        public void MostrarMensajeError(string Mensaje)
        {
            Master.MostrarMensaje(Mensaje.Trim(), TipoMensaje.Error);
        }

        public void ObtenerTabla(List<com.clinica.business.BE.comun.ParametrosBE> lst)
        {
            rbl_TipoDocumento.DataSource = lst;
            rbl_TipoDocumento.DataValueField = "Codigo";
            rbl_TipoDocumento.DataTextField = "DescripcionCorta";
            rbl_TipoDocumento.DataBind();
        }

        public void ObtenerSolicitudCotizacion(List<CotizacionBE> lst)
        {
           if (lst.Count > 0)
            {
                dg_CotizacionesDetalle.DataSource = lst;
                dg_CotizacionesDetalle.DataBind();

                txt_Estado.Text = lst[0].Estado;                
                ListaSolicitudCotizacion=lst;
                PrepararListaServicios();
                if (Request.QueryString["action"].ToString().Trim() == "2" || Request.QueryString["action"].ToString().Trim() == "3")
                {
                    txt_Numero.Text = Request.QueryString["Num"].ToString().Trim();
                    rbl_TipoDocumento.SelectedValue = Request.QueryString["TipoSol"].ToString().Trim();
                    UC_FechaEmision.TextoFecha.Text = lst[0].Fecha.ToString("dd/MM/yyyy");
                    txt_Observaciones.Text = lst[0].Observacion;
                    txt_TotalNeto.Text = lst[0].Neto.ToString("#####.##")==string.Empty ? "0.00" : lst[0].Neto.ToString("#####.##");
                    txt_TotalBruto.Text = lst[0].ImporteBruto.ToString("#####.##") == string.Empty ? "0.00" : lst[0].ImporteBruto.ToString("#####.##");
                    txt_Igv.Text = lst[0].Igv.ToString("#####.##") == string.Empty ? "0.00" : lst[0].Igv.ToString("#####.##");
                    txt_Coaseguro.Text = lst[0].CoSeguro.ToString("#####.##") == string.Empty ? "0.00" : lst[0].CoSeguro.ToString("#####.##");
                    txt_Deducibles.Text = lst[0].Deducible.ToString("#####.##") == string.Empty ? "0.00" : lst[0].Deducible.ToString("#####.##");
                    txt_CodEstado.Text = lst[0].CodigoEstado.ToString();
                    txt_Estado.Text = lst[0].Estado;
                    txt_Numero.Text = Request.QueryString["Num"].ToString().Trim();                    
                    UC_FechaEmision.TextoFecha.Text = lst[0].Fecha.ToString("dd/MM/yyyy");
                    txt_CodEspecialidad.Text = lst[0].CodigoEspecialidad.ToString();
                    txt_Vigencia.Text = lst[0].Vigencia.ToString();
                    txt_NumeroCarta.Text = lst[0].NumeroCartaGarantia.ToString();
                    txt_Referencia.Text = lst[0].Referencia.Trim();
                    txt_Especialidad.Text = lst[0].Especialidad.Trim();
                    PacienteBE oPac = new PacienteBE();
                    oPac.Codigo = lst[0].CodigoPaciente;
                    oPresenter.onBuscar_Paciente_Detalle(oPac);
                    //Calcularresultados();
                }
            }
        }

        public void MantenimientoCotizacion(int NunSol)
        {
            Session.Add("Action", "update");
            EstablecerModos(2);
            CotizacionBE oCoti = new CotizacionBE();
            oCoti.NumeroSol = NunSol;
            oCoti.TipoCotizacion = int.Parse(rbl_TipoDocumento.SelectedValue);
            oPresenter.onObtener_Cotizacion(oCoti);
            txt_Numero.Text = NunSol.ToString();
            if (Request.QueryString["action"].ToString().Trim() == "1")
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se registró la cotización Nro." + NunSol.ToString() + "');", true);
            else if (Request.QueryString["action"].ToString().Trim() == "2")
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se Modificó la cotización Nro." + NunSol.ToString() + "');", true);
        }

        public void ActualizarEstadoCotizacion(int NunSol)
        {
            EstablecerModos(2);
            CotizacionBE oCoti = new CotizacionBE();
            oCoti.NumeroSol = NunSol;
            oCoti.TipoCotizacion = int.Parse(rbl_TipoDocumento.SelectedValue);
            oPresenter.onObtener_Cotizacion(oCoti);
            txt_Numero.Text = NunSol.ToString();
            btn_Aprobar.Enabled = false;
            btn_Rechazar.Enabled = false;
            ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se Aprobo la cotización Nro." + NunSol.ToString() + "');", true);
        }

        public void RechazarCotizacion(int NunSol)
        {
            try
            {
            EstablecerModos(2);
            CotizacionBE oCoti = new CotizacionBE();
            if (txt_Observaciones.Text.Trim() == string.Empty)
                throw new Exception("Debe ingresar el motivo del rechazo en observaciones");
            else
                oCoti.Observacion = txt_Observaciones.Text.Trim();
                oCoti.NumeroSol = NunSol;
                oCoti.TipoCotizacion = int.Parse(rbl_TipoDocumento.SelectedValue);
                oPresenter.onObtener_Cotizacion(oCoti);
                txt_Numero.Text = NunSol.ToString();
                btn_Aprobar.Enabled = false;
                btn_Rechazar.Enabled = false;
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se Rechazo la cotización Nro." + NunSol.ToString() + "');", true);
            }
            catch (Exception ex)
            {
                Master.MostrarMensaje(ex.Message, TipoMensaje.Error);
            }
        }

        #endregion
         public List<CotizacionBE> ListaSolicitudCotizacion 
        {
            get { return (List<CotizacionBE>)Session["SolicitudCoti"];}
            set { Session["SolicitudCoti"] = value; }
        }

         #region ILiclMantenimientoCotizacion Members


         public void BuscarPacienteDetalle(List<PacienteBE> lst)
         {
             if (lst.Count > 0)
             {
                 txt_CiaSeguros.Text = lst[0].Aseguradora.ToString();
                 txt_Empresa.Text = lst[0].Empresa;
                 txt_HistoriaClinica.Text = string.Empty;
                 txt_PlanSalud.Text = lst[0].PlanSalud;
                 txt_Poliza.Text = lst[0].CodigoPoliza.ToString();
                 txt_CodigoPaciente.Text = lst[0].Codigo.ToString();
                 txt_Paciente.Text = lst[0].NombreCompleto;
             }
         }

         #endregion

         #region ILiclMantenimientoCotizacion Members


         public void BuscarPaciente(List<PacienteBE> lst)
         {
             if (lst.Count > 0)
             {
                 txt_CiaSeguros.Text = lst[0].CodigoAseguradora.ToString();
                 txt_Empresa.Text = lst[0].Empresa;
                 txt_HistoriaClinica.Text = string.Empty;
                 txt_PlanSalud.Text = lst[0].PlanSalud;
                 txt_Poliza.Text = lst[0].Poliza;
                 txt_CodigoPaciente.Text = lst[0].Codigo.ToString();
                 txt_Paciente.Text = lst[0].NombreCompleto;
             }
             else
             {
                 txt_CiaSeguros.Text = string.Empty;
                 txt_Empresa.Text = string.Empty;
                 txt_HistoriaClinica.Text = string.Empty;
                 txt_PlanSalud.Text = string.Empty;
                 txt_Poliza.Text = string.Empty;
                 txt_CodigoPaciente.Text = string.Empty;
                 txt_Paciente.Text = string.Empty;
             } 
         }

         #endregion

         protected void btn_Imprimir_Click(object sender, EventArgs e)
         {
             ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se envió a imprimir la cotización Nro." + txt_Numero.Text + "');", true);

             Timer1.Enabled = true;
         }

         protected void Timer1_Tick(object sender, EventArgs e)
         {
             string strUrl = string.Empty;
             string strScript = string.Empty;
             if (Request.QueryString["action"].ToString().Trim() == "2")
                 //strUrl = "~/gescot/FormsConBandejaCotizacion.aspx?action=0";
                 strUrl = "FormsConBandejaCotizacion.aspx?action=0";
             else if (Request.QueryString["action"].ToString().Trim() == "3")
                 //strUrl = "~/gescot/FormsConBandejaCotizacion.aspx?action=1";
                 strUrl = "FormsConBandejaCotizacion.aspx?action=1";
             strScript = "window.location = '" + strUrl + "';";
             ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", strScript, true);
    
         }

    }
}
